package com.lry.poi;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.lry.easyExcel.Modbus;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
 

public class ExcelService {

    /**
     * 单sheet导入
     *
     * @param file
     */
//    public void importExcel(MultipartFile file) {
//        ImportParams importParams = new ImportParams();
//        // 距离表头中间有几行不要的数据
//        importParams.setHeadRows(1);
//        // 表头在第几行
//        importParams.setTitleRows(1);
//        // 需要验证
//        importParams.setNeedVerfiy(true);
//        try {
//            ExcelImportResult<ExcelMode> result = ExcelImportUtil.importExcelMore(file.getInputStream(), ExcelMode.class,
//                    importParams);
//            List<ExcelMode> successList = result.getList();
//            for (ExcelMode demoExcel : successList) {
//                System.out.println(demoExcel);
//            }
//        }catch (Exception e) {
//        }
//    }

    public void importExcel(File file) {
        ImportParams importParams = new ImportParams();
        // 距离表头中间有几行不要的数据
        importParams.setHeadRows(1);
        // 表头在第几行
        importParams.setTitleRows(1);
        // 需要验证
//        importParams.setNeedVerfiy(true);

        importParams.setSheetNum(1);
        try {
            ExcelImportResult<Modbus> result = ExcelImportUtil.importExcelMore(new FileInputStream(file), Modbus.class,
                    importParams);
            List<Modbus> successList = result.getList();
            for (Modbus demoExcel : successList) {
                System.out.println(demoExcel);
            }
        }catch (Exception e) {
        }
    }
 
    /**
     * 多sheet导入
     *
     * @param path
     * @return
     * @throws IOException
     */
    public void importSheets(String path){
        try {
            File file = new File(path);
            InputStream is = new FileInputStream(file);

//            POIFSFileSystem  fs = new POIFSFileSystem(is);
//            Workbook workBook = new HSSFWorkbook(fs);
            // 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页
            Workbook workBook = ExcelUtil.getWorkBook(is);
            StringBuilder sb=new StringBuilder();
            ImportParams params = new ImportParams();
            // 循环工作表Sheet
            for (int numSheet = 0; numSheet < workBook.getNumberOfSheets(); numSheet++) {
                // 表头在第几行
                params.setTitleRows(0);
                // 距离表头中间有几行不要的数据
                params.setStartRows(1);
                // 第几个sheet页
                params.setStartSheetIndex(numSheet);
                // 验证数据
                params.setNeedVerfiy(true);

                ExcelImportResult<Modbus> result =ExcelImportUtil.importExcelMore(file,
                        Modbus.class, params);
                // 校验是否合格
                if(result.isVerfiyFail()){
                    // 不合格的数据
                    List<Modbus> errorList = result.getList();
                    // 拼凑错误信息,自定义
                    for(int i=0;i<errorList.size();i++){
                        ExcelUtil.getWrongInfo(sb, errorList, i, errorList.get(i), "name", "用户信息不合法");
                    }
                }
                // 合格的数据
                List<Modbus> successList = result.getList();
                // 业务逻辑
                System.out.println(successList);
            }
        } catch (Exception e) {
        }
    }


}